package main

import "fmt"

// map (映射)
func main() {

	// 光声明map类型，但是没有初始化，所以 a 就是初始值 nil
	var a map[string]int
	fmt.Println(a == nil) // 输出true

	// map 的初始化
	a = make(map[string]int, 8) // 容量是8
	fmt.Println(a == nil)       //输出false，则说明不是空的值，有内存空间了

	// map中添加键值对
	a["沙河娜扎"] = 100 // key是string类型，值是 int 结构体类型
	a["沙河小王子"] = 200
	fmt.Printf("a:%#v\n", a)
	fmt.Printf("type:%T\n", a)

	// 声明map的同时完成初始化
	b := map[int]bool{ // 添加了2个键值对
		1: true,
		2: false,
	}
	fmt.Printf("b:%#v\n", b)
	fmt.Printf("type:%T", b)

	// map没有初始化直接赋值，运行报错
	var c map[int]int
	c[100] = 200 // 这个map 没有初始化，没有申请地址，不能直接操作
	fmt.Println(c)

}
